<?php
	$urlCurso			=	constant('PARAMETRO_1');
	$cursoVisualizado	=	new Curso(null, $urlCurso);
	$idUsuario          = $this->getUsuario() == null ? null : $this->getUsuario()->getIdUsuario();
	$idCurso = $cursoVisualizado->getIdCurso();
	$tipoUsuario = $this->getUsuario()->getTipoCadastro();
	$permissaoGlossario = new Permissao($idCurso, 'glossario', $tipoUsuario);
	
	if(defined('PARAMETRO_2')) {
		$moduloVisualizado		=	null;
		$glossario			=	null;
		$localAcao	=	constant('PARAMETRO_2');
		if ($localAcao == 'consulta' && defined('PARAMETRO_3') && constant('PARAMETRO_3') == 'glossario') {
			$localAcao	=	constant('PARAMETRO_3');
			$objetivoPagina	=	(defined('PARAMETRO_4') && (constant('PARAMETRO_4') == 'inserir' || is_numeric(constant('PARAMETRO_4')))) ? constant('PARAMETRO_4') : 'listar';
			if ($objetivoPagina == 'listar') {
				$ordenacaoAtual		=	defined('PARAMETRO_4') ? str_replace('ordena', '', constant('PARAMETRO_4')) : 'termo';
				$ordenacaoAtual	= str_replace('ordena', '', $ordenacaoAtual);
				if($ordenacaoAtual == 'datamodificacao')
					$ordenacaoAtual = 'dataHoraUltimaModificacao';
				if($ordenacaoAtual == 'datainsercao')
					$ordenacaoAtual = 'dataHoraInsercao';
				$ordemAtual			=	defined('PARAMETRO_5') ? constant('PARAMETRO_5') : 'asc';
			}
			if (is_numeric($objetivoPagina)) {
				$idGlossario	=	$objetivoPagina;
				$glossario	=	new Glossario($idGlossario);
				if ($glossario->getIdGlossario() == null)
					redireciona(array('curso', $cursoVisualizado->getUrlCurso(), 'consulta', 'glossario'));
				$objetivoPagina	=	defined('PARAMETRO_5') ? constant('PARAMETRO_5') : '';
			}
				
		}
		else {
			if ($localAcao == 'modulo') {
				$idModulo			=	defined('PARAMETRO_3') ? constant('PARAMETRO_3') : null;
				$moduloVisualizado	=	new Modulo($idModulo);
				if ($moduloVisualizado->getIdModulo() == null) {
					redireciona(array('curso', $cursoVisualizado->getUrlCurso(), 'modulo'));
				}
				if (defined('PARAMETRO_4') && constant('PARAMETRO_4') == 'glossario') {
					$objetivoPagina	=	(defined('PARAMETRO_5') && (constant('PARAMETRO_5') == 'inserir' || is_numeric(constant('PARAMETRO_5')))) ? constant('PARAMETRO_5') : 'listar';
					if ($objetivoPagina == 'listar') {
						$ordenacaoAtual		=	defined('PARAMETRO_5') ? str_replace('ordena', '', constant('PARAMETRO_5')) : 'termo';
						$ordenacaoAtual	= str_replace('ordena', '', $ordenacaoAtual);
						if($ordenacaoAtual == 'datamodificacao')
							$ordenacaoAtual = 'dataHoraUltimaModificacao';
						if($ordenacaoAtual == 'datainsercao')
							$ordenacaoAtual = 'dataHoraInsercao';
						$ordemAtual			=	defined('PARAMETRO_6') ? constant('PARAMETRO_6') : 'asc';
					}
					if (is_numeric($objetivoPagina)) {
						$idGlossario	=	$objetivoPagina;
						$glossario	=	new Glossario($idGlossario);
						if ($glossario->getIdGlossario() == null)
							redireciona(array('curso', $cursoVisualizado->getUrlCurso(), 'modulo', $moduloVisualizado->getIdModulo(), 'glossario'));
						$objetivoPagina	=	defined('PARAMETRO_6') ? constant('PARAMETRO_6') : '';
					}
				}
				else 
					redireciona(array('404'));
				
			}
			else {
				redireciona(array('404'));
			}
		}
		if($cursoVisualizado->permissaoAcesso($idUsuario,'glossario')){
			if($_POST){
				//Insere ou atualiza glossario no BD
				if(isset($_POST['btnSalvar'])) {
					if($objetivoPagina == 'inserir' || $objetivoPagina == 'editar') {
						
						$strTermo     = pegaPost('strTermo');
						$strDescricao = configuraHTMLFormatado(pegaPost('strDescricao'));
						
						if($objetivoPagina == 'inserir') {
							if(!$permissaoGlossario->checkPermissao('Inserir',$this->getUsuario()->getFuncaoUsuarioCurso($idUsuario,$tipoUsuario,$idCurso),0)){
								redireciona(array('curso', $cursoVisualizado->getUrlCurso(), 'consulta', 'glossario'));
							}
							$erro = false;
							if($idGlossario	=	Glossario::inserir($cursoVisualizado->getIdCurso(), $idUsuario, $strTermo, $strDescricao)){
								if (is_numeric($idGlossario)) {
									if ($localAcao == 'modulo'){
										$objAssociacoes	=	new Associacoes($cursoVisualizado->getIdCurso(), $idGlossario, 'glossarios', $cursoVisualizado->getUrlCurso(), $cursoVisualizado->getNomeModulo());
										$objAssociacoes->criarAssociacao($moduloVisualizado->getIdModulo(), $cursoVisualizado->getNomeModulo(), $idUsuario);
									}
									foreach ($_POST as $chave => $post) {
										if (preg_match('/^strAssociacao[0-9]+$/', $chave) && $post != '--') {
											//Uma Associacao foi feita
											//conseguiu pegar o id da glossario que acabou de inserir
											$matches	=	array();
											
											if (preg_match('/^([^|]+)\|\|([0-9]+)$/', $post, $matches)) {
												$categoriaItemAssociacao	=	$matches[1];
												$idItemAssociacao			=	$matches[2];
												
												$objAssociacoes	=	new Associacoes($cursoVisualizado->getIdCurso(), $idGlossario, 'glossarios', $cursoVisualizado->getUrlCurso(), $cursoVisualizado->getNomeModulo());
												$objAssociacoes->criarAssociacao($idItemAssociacao, $categoriaItemAssociacao, $idUsuario);
											}
										}
									}
								}
								else {
									//Nao conseguiu pegar o id da glossario que acabou de inserir (necessario para criar associcao)
									adicionaMensagem(texto('MENSAGEM_INSERCAO_COM_SUCESSO_ERRO_ASSOCIACAO'), 'erro');
								}
								
								$linkItem	=	preg_replace('/\/$/', '', getUrlCompleta()) . montaLink(array('curso', $cursoVisualizado->getUrlCurso(), 'consulta', 'glossario', $idGlossario));
								$cursoVisualizado->enviaEmailParticipantes($this->getUsuario()->getIdUsuario(), textoEmail('EMAIL_ASSUNTO_NOVO_GLOSSARIO'), textoEmail('EMAIL_TITULO_NOVO_GLOSSARIO'), textoEmail('EMAIL_NOVO_GLOSSARIO', array($cursoVisualizado->getNome(), $strTermo, $this->getUsuario()->getNome(), $linkItem)));
								if ($localAcao == 'modulo')
									redireciona(array('curso', $urlCurso, 'modulo', $moduloVisualizado->getIdModulo(), 'glossario'));
								if ($localAcao == 'glossario')
									redireciona(array('curso', $cursoVisualizado->getUrlCurso(), 'consulta', 'glossario'));
							}
							else {
								if ($localAcao == 'modulo')
									$listaAssociacoes	=	array($cursoVisualizado->getNomeModulo() . '||' . $moduloVisualizado->getIdModulo());
								if ($localAcao == 'glossario')
									$listaAssociacoes	=	array();
								
								foreach ($_POST as $chave => $post) {
									$matches			=	array();
									if (preg_match('/^([^|]+)\|\|([0-9]+)$/', $post, $matches)) {
										array_push($listaAssociacoes, $matches[1] . '||' . $matches[2]);
									}
								}
								array_push($listaAssociacoes, '--');
								
								$_SESSION['constructore']['inserirGlossario']['strTermo']	  =	htmlentities((stripslashes(pegaPost('strTermo'))), ENT_QUOTES, 'UTF-8');
								$_SESSION['constructore']['inserirGlossario']['strDescricao'] =	stripslashes($strDescricao);
								$_SESSION['constructore']['inserirGlossario']['listaAssociacoes']	=	$listaAssociacoes;
								if ($localAcao == 'modulo')
									redireciona(array('curso', $urlCurso, 'modulo', $moduloVisualizado->getIdModulo(), 'glossario', 'inserir'));
								if ($localAcao == 'glossario')
									redireciona(array('curso', $cursoVisualizado->getUrlCurso(), 'consulta', 'glossario', 'inserir'));
							}
						}
						else {
							if($objetivoPagina == 'editar' && $glossario != null && $glossario->getIdGlossario() != null) {
								if(!$permissaoGlossario->checkPermissao('Editar',$this->getUsuario()->getFuncaoUsuarioCurso($idUsuario,$tipoUsuario,$idCurso),0)){
									redireciona(array('curso', $cursoVisualizado->getUrlCurso(), 'consulta', 'glossario'));
								}
								
								$idGlossario = $glossario->getIdGlossario();
								
								if(Glossario::editar($idGlossario, $idUsuario, $strTermo, $strDescricao)){
									if (is_numeric($idGlossario)) {
										//conseguiu pegar o id do glossario que acabou de inserir
										if (Associacoes::excluirAssociacao($cursoVisualizado->getIdCurso(), 'glossarios', $idGlossario)) {
											if ($localAcao == 'modulo'){
												$objAssociacoes	=	new Associacoes($cursoVisualizado->getIdCurso(), $idGlossario, 'glossarios', $cursoVisualizado->getUrlCurso(), $cursoVisualizado->getNomeModulo());
												$objAssociacoes->criarAssociacao($moduloVisualizado->getIdModulo(), $cursoVisualizado->getNomeModulo(), $idUsuario);
											}
											foreach ($_POST as $chave => $post) {
												if (preg_match('/^strAssociacao[0-9]+$/', $chave) && $post != '--') {
													//Uma Associacao foi feita
													
													$matches	=	array();
													
													if (preg_match('/^([^|]+)\|\|([0-9]+)$/', $post, $matches)) {
														$categoriaItemAssociacao	=	$matches[1];
														$idItemAssociacao			=	$matches[2];
														
														$objAssociacoes	=	new Associacoes($cursoVisualizado->getIdCurso(), $idGlossario, 'glossarios', $cursoVisualizado->getUrlCurso(), $cursoVisualizado->getNomeModulo());
														$objAssociacoes->criarAssociacao($idItemAssociacao, $categoriaItemAssociacao, $idUsuario);
													}
												}
											}
										}
										else {
											//Nao conseguiu pegar o id do glossario que acabou de inserir (necessario para criar associcao)
											adicionaMensagem(texto('MENSAGEM_INSERCAO_COM_SUCESSO_ERRO_ASSOCIACAO'), 'erro');
										}
									}
									else {
										//Nao conseguiu pegar o id do glossario que acabou de inserir (necessario para criar associcao)
										adicionaMensagem(texto('MENSAGEM_INSERCAO_COM_SUCESSO_ERRO_ASSOCIACAO'), 'erro');
									}
									if ($localAcao == 'modulo')
										redireciona(array('curso', $urlCurso, 'modulo', $moduloVisualizado->getIdModulo(), 'glossario'));
									if ($localAcao == 'glossario')
										redireciona(array('curso', $cursoVisualizado->getUrlCurso(), 'consulta', 'glossario'));	
								}
								else {
									if ($localAcao == 'modulo')
										$listaAssociacoes	=	array($cursoVisualizado->getNomeModulo() . '||' . $moduloVisualizado->getIdModulo());
									if ($localAcao == 'glossario')
										$listaAssociacoes	=	array();
								
									foreach ($_POST as $chave => $post) {
										$matches			=	array();
										if (preg_match('/^([^|]+)\|\|([0-9]+)$/', $post, $matches)) {
											array_push($listaAssociacoes, $matches[1] . '||' . $matches[2]);
										}
									}
									array_push($listaAssociacoes, '--');
									
									$_SESSION['constructore']['inserirGlossario']['strTermo']	  =	htmlentities((stripslashes(pegaPost('strTermo'))), ENT_QUOTES, 'UTF-8');
									$_SESSION['constructore']['inserirGlossario']['strDescricao'] =	stripslashes($strDescricao);
									$_SESSION['constructore']['inserirGlossario']['listaAssociacoes']	=	$listaAssociacoes;
									if ($localAcao == 'modulo')
										redireciona(array('curso', $urlCurso, 'modulo', $moduloVisualizado->getIdModulo(), 'glossario', $idGlossario, 'editar'));
									if ($localAcao == 'glossario')
										redireciona(array('curso', $cursoVisualizado->getUrlCurso(), 'consulta', 'glossario', $idGlossario, 'editar'));
								}
							}
							else {
								//Acao Invalida
								redireciona(array('404'));
							}
						}
					}
					else {
						//Acao Invalida
						redireciona(array('404'));
					}
				}
				
				if(isset($_POST['btnInserir'])){
					if ($localAcao == 'glossario')
						redireciona(array('curso', $cursoVisualizado->getUrlCurso(), 'consulta', 'glossario', 'inserir'));
					if ($localAcao == 'modulo')
						redireciona(array('curso', $cursoVisualizado->getUrlCurso(), 'modulo', $moduloVisualizado->getIdModulo(), 'glossario', 'inserir'));
				}
				
				if(isset($_POST['btnCancelar'])){
					if ($localAcao == 'glossario')
						redireciona(array('curso', $cursoVisualizado->getUrlCurso(), 'consulta', 'glossario'));
					if ($localAcao == 'modulo')
						redireciona(array('curso', $cursoVisualizado->getUrlCurso(), 'modulo', $moduloVisualizado->getIdModulo(), 'glossario'));
				}
				
				if(isset($_POST['btnExcluir'])){
					$arrayIds	=	array();
					foreach($_POST as $chave => $post) {
						if(preg_match('/^checkGlossario[0-9]+$/', $chave) && $post != ""){
							array_push($arrayIds, str_replace('checkGlossario', '', $chave));
						}
					}
					if ($localAcao == 'glossario') {
						$erro	=	false;
						foreach($arrayIds as $id) {
							if (!Glossario::apagar($id))
								$erro	=	true;
						}
						if (!$erro) adicionaMensagem(texto('MENSAGEM_SUCESSO_APAGAR_ITEM'));
						redireciona(array('curso', $cursoVisualizado->getUrlCurso(), 'consulta', 'glossario'));
					}
					if ($localAcao == 'modulo') {
						$erro	=	false;
						foreach($arrayIds AS $id) {
							if(!Associacoes::excluirAssociacao($cursoVisualizado->getIdCurso(), 'glossarios', $id, $cursoVisualizado->getNomeModulo(), $moduloVisualizado->getIdModulo(), $cursoVisualizado->getNomeModulo()))
								$erro	=	true;
						}
						if (!$erro)
							adicionaMensagem(texto('MENSAGEM_SUCESSO_APAGAR_ITEM'));
						else
							adicionaMensagem(texto('MENSAGEM_ERRO_APAGAR_ITEM'), 'erro');
						redireciona(array('curso', $urlCurso,'modulo', $moduloVisualizado->getIdModulo(), 'glossario'));
					}
				}
				
				if (isset($_POST['btnExcluirAssociacao'])) {
					$associacao	=	explode('||', pegaPost('btnExcluirAssociacao'));
					if(is_numeric($idGlossario)) {
						if(Associacoes::excluirAssociacao($cursoVisualizado->getIdCurso(), 'glossarios', $idGlossario, $associacao[0], $associacao[1], $cursoVisualizado->getNomeModulo()))
							adicionaMensagem(texto('MENSAGEM_SUCESSO_APAGAR_ITEM'));
						else
							adicionaMensagem(texto('MENSAGEM_ERRO_APAGAR_ITEM'), 'erro');
						if ($localAcao == 'glossario')
							redireciona(array('curso', $urlCurso, 'consulta', 'glossario', $idGlossario, 'editar'));
						if ($localAcao == 'modulo')
							redireciona(array('curso', $urlCurso, 'modulo', $moduloVisualizado->getIdModulo(), 'glossario', $idGlossario, 'editar'));
					}
					else {
						redireciona(array("404"));
					}
				}
				
			}
			else {
				//Passando o Local da visualizacao para o template
				$this->getSmarty()->assign('localAcao', $localAcao);
				$this->getSmarty()->assign_by_ref('curso', $cursoVisualizado);
				if ($localAcao == 'modulo') {
					$this->getSmarty()->assign_by_ref('modulo', $moduloVisualizado);
					$this->getSmarty()->assign('arrayMenuModulo', $moduloVisualizado->configuraMenu($cursoVisualizado->getUrlCurso(), $cursoVisualizado->getNomeModulo()));
				}
				//Para exibir o formulario de insercao do termo do glossario
				if ($objetivoPagina == 'inserir') {
					if(!$permissaoGlossario->checkPermissao('Inserir',$this->getUsuario()->getFuncaoUsuarioCurso($idUsuario,$tipoUsuario,$idCurso),0)){
						redireciona(array('curso', $cursoVisualizado->getUrlCurso(), 'consulta', 'glossario'));
					}
					$this->getSmarty()->assign('inserir', true);
					$this->getSmarty()->assign('LEGEND_INSERIR_GLOSSARIO', texto('LEGEND_INSERIR_GLOSSARIO'));
					$this->getSmarty()->assign('arrayItensInseridos', $cursoVisualizado->getItensInseridos());
					$this->getSmarty()->assign('TITULO_BARRA_NAVEGADOR', texto('TITULO_BARRA_NAVEGADOR', $localAcao == 'modulo' ? array(texto('TEXTO_INSERIR_DADO', array(texto('DADOS_TERMO'))) . ' - ' . texto('AREA_GLOSSARIO') . ' - ' .  limitaTexto($moduloVisualizado->getTitulo()) . ' - '. $cursoVisualizado->getNomeModulo() . ' - ' . limitaTexto($cursoVisualizado->getNome())) : array(texto('TEXTO_INSERIR_DADO', array(texto('DADOS_TERMO'))) . ' - ' . texto('AREA_GLOSSARIO') . ' - ' . limitaTexto($cursoVisualizado->getNome()))));
					$this->getSmarty()->assign('TEXTO_NAVEGACAO', $localAcao == 'modulo'? limitaTexto($cursoVisualizado->getNome()) . ' > ' . $cursoVisualizado->getNomeModulo() . ' > '. limitaTexto($moduloVisualizado->getTitulo()) . ' > ' . texto('AREA_GLOSSARIO') . ' > ' . texto('TEXTO_INSERIR_DADO', array(texto('DADOS_TERMO'))) : limitaTexto($cursoVisualizado->getNome()) . ' > ' . texto('AREA_GLOSSARIO') . ' > ' . texto('TEXTO_INSERIR_DADO', array(texto('DADOS_TERMO'))));
							
					if (!isset($_SESSION['constructore']['inserirGlossario']['listaAssociacoes'])) {
						if ($localAcao == 'glossario')
							$_SESSION['constructore']['inserirGlossario']['listaAssociacoes']	=	array('--');
						if ($localAcao == 'modulo')
							$_SESSION['constructore']['inserirGlossario']['listaAssociacoes']	=	array($cursoVisualizado->getNomeModulo() . '||' . $moduloVisualizado->getIdModulo(), '--');
					}
				}
				else {
					if($objetivoPagina == 'editar' || $objetivoPagina == 'ver') {
						if ($objetivoPagina == 'editar') {
							if(!$permissaoGlossario->checkPermissao('Editar',$this->getUsuario()->getFuncaoUsuarioCurso($idUsuario,$tipoUsuario,$idCurso),0)){
								redireciona(array('curso', $cursoVisualizado->getUrlCurso(), 'comunicacao', 'glossario'));
							}
							if(is_array($resultado = Glossario::buscar($glossario->getIdGlossario(), $cursoVisualizado->getIdCurso(), null, null, null, null, null, null, null, null, null))){
								
								$glossario = $resultado['listaResultados'][0];
			
								$_SESSION['constructore']['inserirGlossario']['strTermo']     = $glossario['titulo'];
								$_SESSION['constructore']['inserirGlossario']['strDescricao'] = $glossario['descricao'];
								$_SESSION['constructore']['inserirGlossario']['idGlossario']  = $glossario['idItem'];
								
								if ($localAcao == 'glossario')
									$listaAssociacoes	=	array();
								if ($localAcao == 'modulo')
									$listaAssociacoes	=	array($cursoVisualizado->getNomeModulo() . '||' . $moduloVisualizado->getIdModulo());
										
								//Pegando e ajeitando associacoes
								$associacoesGlossario	=	new Associacoes($cursoVisualizado->getIdCurso(), $glossario['idItem'], 'glossarios', $cursoVisualizado->getUrlCurso(), $cursoVisualizado->getNomeModulo());
								$arrayAssociacoes	=	$associacoesGlossario->getAssociacoes();
								foreach ($arrayAssociacoes as $grupoAssociacoes => $associacoesGrupo) {
									foreach ($associacoesGrupo as $chaveAssociacao => $dadosAssociacao) {
										$associacao	=	$grupoAssociacoes . "||" . $dadosAssociacao['idElemento'];
										if ($moduloVisualizado == null || ($moduloVisualizado != null && $moduloVisualizado->getIdModulo() != null && $associacao != $cursoVisualizado->getNomeModulo() . '||' . $moduloVisualizado->getIdModulo()))
											array_push($listaAssociacoes, $associacao);
									}
								}
								array_push($listaAssociacoes, '--');
								$_SESSION['constructore']['inserirGlossario']['listaAssociacoes']	=	$listaAssociacoes;
								
								$this->getSmarty()->assign('arrayItensInseridos', $cursoVisualizado->getItensInseridos());						
								$this->getSmarty()->assign('editar', true);
								
								$this->getSmarty()->assign('TITULO_BARRA_NAVEGADOR', texto('TITULO_BARRA_NAVEGADOR', $localAcao == 'modulo' ? array(texto('TEXTO_EDITAR_DADO', array(texto('DADOS_TERMO'))) . ' - ' . texto('AREA_GLOSSARIO') . ' - ' .  limitaTexto($moduloVisualizado->getTitulo()) . ' - '. $cursoVisualizado->getNomeModulo() . ' - ' . limitaTexto($cursoVisualizado->getNome())) : array(texto('TEXTO_EDITAR_DADO', array(texto('DADOS_TERMO'))) . ' - ' . texto('AREA_GLOSSARIO') . ' - ' . limitaTexto($cursoVisualizado->getNome()))));
								$this->getSmarty()->assign('TEXTO_NAVEGACAO', $localAcao == 'modulo'? limitaTexto($cursoVisualizado->getNome()) . ' > ' . $cursoVisualizado->getNomeModulo() . ' > '. limitaTexto($moduloVisualizado->getTitulo()) . ' > ' . texto('AREA_GLOSSARIO') . ' > ' . texto('TEXTO_EDITAR_DADO', array(texto('DADOS_TERMO'))) : limitaTexto($cursoVisualizado->getNome()) . ' > ' . texto('AREA_GLOSSARIO') . ' > ' . texto('TEXTO_EDITAR_DADO', array(texto('DADOS_TERMO'))));
							}
							else {
								adicionaMensagem(texto('MENSAGEM_ERRO_INTERNO'), 'erro');
								redireciona(array('curso', $cursoVisualizado->getUrlCurso(), 'consulta', 'glossario'));
							}
						}
						else {
							//TODO VISUALIZAR UM ITEM
						}
				    }
				    else {
						//TODO quando pode inserir, permissoes
						
					    if($permissaoGlossario->checkPermissao('Inserir',$this->getUsuario()->getFuncaoUsuarioCurso($idUsuario,'Professor',$idCurso),0)){
							$this->getSmarty()->assign('possivelInserir', true);
						}
						if($permissaoGlossario->checkPermissao('Editar',$this->getUsuario()->getFuncaoUsuarioCurso($idUsuario,'Professor',$idCurso),0)){
							$this->getSmarty()->assign('possivelEditar', true);
						}
				    	if($permissaoGlossario->checkPermissao('Excluir',$this->getUsuario()->getFuncaoUsuarioCurso($idUsuario,$tipoUsuario,$idCurso),0)){
							$this->getSmarty()->assign('possivelExcluir', true);
						}
						if ($localAcao == 'glossario') {
							if (!is_array($resultado	=	$cursoVisualizado->getGlossarios(null, null, $ordenacaoAtual, $ordemAtual)))
								redireciona(array('404'));
							
						}		
						if ($localAcao == 'modulo') {
							$associacoesModulo	=	new Associacoes($cursoVisualizado->getIdCurso(), $moduloVisualizado->getIdModulo(), 'modulos', $cursoVisualizado->getUrlCurso(), $cursoVisualizado->getNomeModulo());
							$arrayAssociacoes	=	$associacoesModulo->getAssociacoes();
							$arrayIdGlossarios	=	array();
							foreach($arrayAssociacoes AS $chave => $associacoes) {
								if ($chave == 'Glossário') {
									foreach ($associacoes as $associacao) {
										array_push($arrayIdGlossarios, $associacao['idElemento']);
									}
								}
							}
							if (sizeof($arrayIdGlossarios) > 0) {
								if (!is_array($resultado	=	Glossario::buscar($arrayIdGlossarios, $cursoVisualizado->getIdCurso(), null, null, null, null, null, null, null, $ordenacaoAtual, $ordemAtual)))
									redireciona(array('404'));
							}
							else {
								$resultado	=	array('listaResultados' => array(), 'qtdResultadosTotal' => 0, 'qtdPaginas' => 0);
							}
						}
						if (is_array($resultado)) {
							$listaGlossario     = $resultado['listaResultados'];
							$qtdTermosGlossario = $resultado['qtdResultadosTotal'];
							
							//Formatando a lista de termos para os dados serem exibidos corretamente
							foreach($listaGlossario as $chave => $glossario){
								$glossarioTemp = $glossario;
								
								$idUsuarioUltimaModificacao = $glossarioTemp['idUsuarioUltimaModificacao'];
								if($resultadoUsuarioUltimaModificacao = Usuario::getUsuarioPorId($idUsuarioUltimaModificacao, null, null, null, null)) {
									$dadosUsuarioUltimaModificacao = $resultadoUsuarioUltimaModificacao['listaResultados'];
									$qtdAutor   = $resultadoUsuarioUltimaModificacao['qtdResultadosTotal'];
									
									if($qtdAutor > 0) {
										$glossarioTemp['usuarioUltimaModificacao'] = nomeSobrenome($dadosUsuarioUltimaModificacao[0]['nome']); 	
										$glossarioTemp['urlUsuarioUltimaModificacao'] = montalink(array('usuario', $dadosUsuarioUltimaModificacao[0]['idUsuario']));	
									}
									else {
										$glossarioTemp['usuarioUltimaModificacao'] = texto('TEXTO_AUTOR_DESCONHECIDO');	
									}					
								}
								
								//Ultima modificacao
								$glossarioTemp['dataHoraUltimaModificacaoFormatada']	=	texto("TEXTO_ULTIMA_MODIFICACAO_POR", array(getDataHoraFormatada($glossarioTemp['dataHoraUltimaModificacao']), $glossarioTemp['urlUsuarioUltimaModificacao'], $glossarioTemp['usuarioUltimaModificacao']));
								$glossarioTemp['editarUrl']	=	$localAcao == 'modulo' ? montaLink(array('curso', $urlCurso, 'modulo', $moduloVisualizado->getIdModulo(), 'glossario', $glossarioTemp['idItem'], 'editar')) : montaLink(array('curso', $urlCurso, 'consulta', 'glossario', $glossarioTemp['idItem'], 'editar'));
				
								
								//Pegando e ajeitando associacoes
								$associacoesGlossario =	new Associacoes($cursoVisualizado->getIdCurso(), $glossario['idItem'], 'glossarios', $cursoVisualizado->getUrlCurso(), $cursoVisualizado->getNomeModulo());
								$arrayAssociacoes	=	$associacoesGlossario->getAssociacoes();
								foreach ($arrayAssociacoes as $grupoAssociacoes => $associacoesGrupo) {
									foreach ($associacoesGrupo as $chaveAssociacao => $dadosAssociacao) {
										$dadosAssociacaoTemp	=	$dadosAssociacao;
										$dadosAssociacaoTemp['title']	=	texto('TITLE_ASSOCIACOES', array(strip_tags($dadosAssociacao['titulo'])));
										$arrayAssociacoes[$grupoAssociacoes][$chaveAssociacao]	=	$dadosAssociacaoTemp;
									}
								}
								$glossarioTemp['arrayAssociacoes'] = $arrayAssociacoes;
								$listaGlossario[$chave] = $glossarioTemp;
							}
		
							$this->getSmarty()->assign('listaGlossario', $listaGlossario);
							
							$this->getSmarty()->assign('ordenacaoAtual', $ordenacaoAtual);
							$this->getSmarty()->assign('ordemAtual', $ordemAtual);
							
							$this->getSmarty()->assign('LISTA_TITULO_TERMO_HREF', $localAcao == 'modulo'? montaLink(array('curso', $urlCurso, 'modulo', $moduloVisualizado->getIdModulo(), 'glossario', 'ordenatermo', $ordenacaoAtual != 'termo' ? 'asc' : ($ordemAtual == 'desc' ? 'asc' : 'desc'))) : montalink(array('curso', $cursoVisualizado->getUrlCurso(), 'consulta', 'glossario', 'ordenatermo', $ordenacaoAtual != 'termo' ? 'asc' : ($ordemAtual == 'desc' ? 'asc' : 'desc'))));
							$this->getSmarty()->assign('LISTA_TITULO_TERMO_TITLE', $ordenacaoAtual != 'dataHoraUltimaModificacao' ? texto('TEXTO_ORDENA_ASC', array(texto('DADOS_TERMO'))) : ($ordemAtual == 'desc' ? texto('TEXTO_ORDENA_ASC', array(texto('DADOS_TERMO'))) : texto('TEXTO_ORDENA_DESC', array(texto('DADOS_TERMO')))));
							
							$this->getSmarty()->assign('LISTA_TITULO_DATA_INSERCAO_HREF', $localAcao == 'modulo'? montaLink(array('curso', $urlCurso, 'modulo', $moduloVisualizado->getIdModulo(), 'glossario', 'ordenadatainsercao', $ordenacaoAtual != 'dataHoraInsercao' ? 'asc' : ($ordemAtual == 'desc' ? 'asc' : 'desc'))) : montalink(array('curso', $cursoVisualizado->getUrlCurso(), 'consulta', 'glossario', 'ordenadatainsercao', $ordenacaoAtual != 'dataHoraInsercao' ? 'asc' : ($ordemAtual == 'desc' ? 'asc' : 'desc'))));
							$this->getSmarty()->assign('LISTA_TITULO_DATA_INSERCAO_TITLE', $ordenacaoAtual != 'dataHoraInsercao' ? texto('TEXTO_ORDENA_ASC', array(texto('DADOS_DATA_INSERCAO'))) : ($ordemAtual == 'desc' ? texto('TEXTO_ORDENA_ASC', array(texto('DADOS_DATA_INSERCAO'))) : texto('TEXTO_ORDENA_DESC', array(texto('DADOS_DATA_INSERCAO')))));
							
							$this->getSmarty()->assign('LISTA_TITULO_DATA_MODIFICACAO_HREF', $localAcao == 'modulo'? montaLink(array('curso', $urlCurso, 'modulo', $moduloVisualizado->getIdModulo(), 'glossario', 'ordenadatamodificacao', $ordenacaoAtual != 'dataHoraUltimaModificacao' ? 'asc' : ($ordemAtual == 'desc' ? 'asc' : 'desc'))) : montalink(array('curso', $cursoVisualizado->getUrlCurso(), 'consulta', 'glossario', 'ordenadatamodificacao', $ordenacaoAtual != 'dataHoraUltimaModificacao' ? 'asc' : ($ordemAtual == 'desc' ? 'asc' : 'desc'))));
							$this->getSmarty()->assign('LISTA_TITULO_DATA_MODIFICACAO_TITLE', $ordenacaoAtual != 'dataHoraUltimaModificacao' ? texto('TEXTO_ORDENA_ASC', array(texto('DADOS_DATA_ULTIMA_MODIFICACAO'))) : ($ordemAtual == 'desc' ? texto('TEXTO_ORDENA_ASC', array(texto('DADOS_DATA_ULTIMA_MODIFICACAO'))) : texto('TEXTO_ORDENA_DESC', array(texto('DADOS_DATA_ULTIMA_MODIFICACAO')))));
							
							$this->getSmarty()->assign('TITULO_BARRA_NAVEGADOR', texto('TITULO_BARRA_NAVEGADOR', $localAcao == 'modulo' ? array(texto('AREA_GLOSSARIO') . ' - ' .  limitaTexto($moduloVisualizado->getTitulo()) . ' - '. $cursoVisualizado->getNomeModulo() . ' - ' . limitaTexto($cursoVisualizado->getNome())) : array(texto('AREA_GLOSSARIO') . ' - ' . limitaTexto($cursoVisualizado->getNome()))));
							$this->getSmarty()->assign('TEXTO_NAVEGACAO', $localAcao == 'modulo'? limitaTexto($cursoVisualizado->getNome()) . ' > ' . $cursoVisualizado->getNomeModulo() . ' > '. limitaTexto($moduloVisualizado->getTitulo()) . ' > ' . texto('AREA_GLOSSARIO') : limitaTexto($cursoVisualizado->getNome()) . ' > ' . texto('AREA_GLOSSARIO'));
						}
						else {
							//Houve um problema na busca e ela retornou false
							adicionaMensagem(texto('MENSAGEM_ERRO_INTERNO'), 'erro');
							redireciona($_SESSION['constructore']['URLOrigem']);
						}
					}
				}
				$this->exibir('glossario');
				if(isset($_SESSION['constructore']['inserirGlossario'])){
					unset($_SESSION['constructore']['inserirGlossario']);
				}
			}
		}
		else {
			//Usuario nao tem permissao para acessar a pagina
			redireciona(array('404'));
		}
	}
	else {
		redireciona(array('404'));
	}
?>